package com.lihepeng.leecode.interview_dict;

import org.junit.Test;

/**
 * 字符串压缩
 * 字符串压缩。利用字符重复出现的次数，编写一种方法，实现基本的字符串压缩功能。比如，字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短，则返回原先的字符串。你可以假设字符串中只包含大小写英文字母（a至z）。
 * <p>
 * 示例1:
 * <p>
 * 输入："aabcccccaaa"
 * 输出："a2b1c5a3"
 * <p>
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/compress-string-lcci
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */
public class Solution0106 {
    public String compressString(String s) {
        if (s == null || s.length() == 0) {
            return s;
        }
        char currentChar = s.charAt(0);
        int cnt = 1;
        StringBuffer resultStringBuffer = new StringBuffer();
        for (int i = 0; i < s.length(); ++i) {
            if (s.charAt(i) == currentChar) {
                cnt++;
            } else {
                currentChar = s.charAt(i);
                resultStringBuffer.append(currentChar);
                resultStringBuffer.append(cnt);
                cnt = 1;

            }
        }
        resultStringBuffer.append(currentChar);
        resultStringBuffer.append(cnt);

        return resultStringBuffer.length() > s.length() ? s : resultStringBuffer.toString();
    }

    @Test
    public void runTest() {
        String s = "aabcccccaaa";
        System.out.println(this.compressString(s));
    }
}
